/********************************************************************************
 * Project Name		[JavaSE_Fundamentals]
 * File Name     	[TestRandom.java]
 * Creation Date 	[2015-01-01]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/
package api.util;

import java.util.Random;

/**
 * java.util.Random测试
 * 
 * @author 不落的太阳(Sean Yang aka ShortPeace)
 * @version 1.0
 * @since jdk 1.8
 * 
 */
public class TestRandom {

	/**
	 * 使用Math类的random方法生成随机数
	 */
	public static void generateRandomNumberByMathMethod() {
		System.out.println("产生一个1到31的随机数: " + ((int) (Math.random() * 31) + 1));
	}

	/**
	 * 使用Random类生成随机数
	 */
	public static void generateRandomNumberByRandomClass() {
		// 采用Random类来产生随机数
		Random random = new Random();
		System.out.println("产生一个int类型的数字: " + random.nextInt());

		// 产生指定范围的随机数
		System.out.println("产生一个5到25的随机数: " + (5 + random.nextInt(20)));

		// 按均匀分布产生[0.0, 1.0)的随机数
		System.out.println("float类型的随机数: " + random.nextFloat());
		System.out.println("double类型的随机数: " + random.nextDouble());

		// 生成一系列随机数
		for (int i = 0; i < 10; i++) {
			System.out.print((3 + random.nextInt(25)) + "\t");
		}

		System.out.println();

		for (int i = 0; i < 10; i++) {
			System.out.print(random.nextFloat() * 100 + "\t");
		}

		System.out.println();

		// 相同的种子产生的随机数序列相等
		Random random2 = new Random(10);
		for (int i = 0; i < 5; i++) {
			System.out.print(random2.nextInt() + "\t");
		}

		System.out.println();

		Random random3 = new Random(10);
		for (int i = 0; i < 5; i++) {
			System.out.print(random3.nextInt() + "\t");
		}
	}

	public static void main(String[] args) {
		generateRandomNumberByMathMethod();
		generateRandomNumberByRandomClass();
	}
}
